#pragma GCC optimize(2)
#include <iostream>
#include <queue>
#include <map>
#include <unordered_map>
#include <vector>
#include <algorithm>
#include <cmath>
#include <string>
#include <cstring>
#include <set>
#include <unordered_set>
#define IOS ios::sync_with_stdio(false), cin.tie(0), cout.tie(0)
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
typedef pair<int,int> pii;
const int N=1e5+10,M=1e6+10;
pii a[N];
int b[N];
bool cmp(pii a,pii b)
{
	return a.second>b.second;
}
 
int main()
{
	ll n,m,k;
	cin>>n>>m>>k;
	for(int i=1;i<=n;i++) 
	{
		scanf("%d",&a[i].first);
	}
	for(int i=1;i<=m;i++)
	{
		int l,r;
		scanf("%d %d",&l,&r);
		b[l]+=1;
		b[r+1]-=1;
	}
	for(int i=1;i<=n;i++)
	{
		a[i].second=a[i-1].second+b[i];
	}
	sort(a+1,a+n+1,cmp);
//	for(int i=1;i<=n;i++) cout<<a[i].second<<' '; 
	for(int i=1;i<=n;i++)
	{
		if(a[i].first<k)
		{
			k-=a[i].first;
			a[i].first=0;
		}
		else
		{
			a[i].first-=k;
			k=0;
			break;
		}
	}
	ll sum=0;
	for(int i=1;i<=n;i++)
	{
		sum=(ll)a[i].second*(ll)a[i].first+sum;
	}
	cout<<sum;
	return 0;
}

